جزوه · فصل سوم · جلسه ۳۶ · پیاده‌سازی LVM ← بازگشت به فهرست
📘 فصل سوم · جلسه ۳۶ پیاده‌سازی LVM
📅 تاریخ: یکشنبه، ۲۵ مرداد ۱۴۰۵ 👤 مدرس: محمد عابدینی 🐚 Zsh · 🐧 Debian (کالی) · 📦 Red Hat

▍ مقدمه

LVM (Logical Volume Manager) یک لایه انتزاعی بین دیسک‌های فیزیکی و سیستم فایل است که به شما امکان می‌دهد فضای ذخیره‌سازی را به‌صورت پویا و انعطاف‌پذیر مدیریت کنید. با LVM می‌توانید چند دیسک را به یک حجم منطقی بزرگ ترکیب کنید، اندازه پارتیشن‌ها را بدون از دست دادن داده تغییر دهید و از قابلیت‌های پیشرفته‌ای مانند Snapshot استفاده کنید.

▍ مرحله اول: نمایش دیسک‌ها

قبل از شروع، باید دیسک‌های موجود در سیستم را شناسایی کنید. دو روش اصلی برای این کار وجود دارد:

• روش اول: استفاده از lsblk

┌──(ya3in㉿kali)-[~] └─$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS nvme0n1 259:0 0 476.9G 0 disk ├─nvme0n1p1 259:1 0 260M 0 part ├─nvme0n1p2 259:2 0 16M 0 part ├─nvme0n1p3 259:3 0 375.8G 0 part ├─nvme0n1p4 259:4 0 1.2G 0 part ├─nvme0n1p5 259:5 0 977M 0 part /boot/efi ├─nvme0n1p6 259:6 0 38G 0 part / ├─nvme0n1p7 259:7 0 2.1G 0 part [SWAP] ├─nvme0n1p8 259:8 0 35.2G 0 part ├─nvme0n1p9 259:9 0 22G 0 part └─nvme0n1p10 259:10 0 200M 0 part

توضیح: lsblk ساختار دیسک‌ها و پارتیشن‌ها را به صورت درختی نمایش می‌دهد. ستون TYPE نشان می‌دهد که هر مورد یک دیسک (disk) یا پارتیشن (part) است.

• روش دوم: استفاده از fdisk -l

┌──(ya3in㉿kali)-[~] └─$ sudo fdisk -l Disk /dev/nvme0n1: 476.9 GiB, 512110190592 bytes, 1000215216 sectors Device Boot Start End Sectors Size Id Type /dev/nvme0n1p1 2048 532479 530432 260M 83 Linux /dev/nvme0n1p2 532480 565247 32768 16M 83 Linux /dev/nvme0n1p3 565248 788391935 787826688 375.8G 83 Linux ...

توضیح: fdisk -l اطلاعات دقیق‌تری از هر پارتیشن مانند اندازه، نوع و شروع/پایان سکتورها را نمایش می‌دهد.

▍ مرحله دوم: ایجاد Physical Volume (PV)

پس از شناسایی دیسک‌ها و پارتیشن‌ها، باید آنها را به LVM اضافه کنیم. این کار با دستور pvcreate انجام می‌شود. توجه: این دستور تمام داده‌های موجود روی پارتیشن را پاک می‌کند!

┌──(ya3in㉿kali)-[~] └─$ sudo pvcreate /dev/sdb1 /dev/sdb2 Physical volume "/dev/sdb1" successfully created. Physical volume "/dev/sdb2" successfully created.

توضیح: pvcreate /dev/sdb1 /dev/sdb2 دو پارتیشن /dev/sdb1 و /dev/sdb2 را به عنوان Physical Volume به LVM اضافه می‌کند. خروجی نشان می‌دهد که هر دو با موفقیت ایجاد شده‌اند.

• مشاهده Physical Volume‌ها

┌──(ya3in㉿kali)-[~] └─$ sudo pvs PV VG Fmt Attr PSize PFree /dev/sdb1 lvm2 --- 10.00g 10.00g /dev/sdb2 lvm2 --- 10.00g 10.00g

توضیح: pvs یا pvdisplay لیست Physical Volume‌های موجود را نمایش می‌دهد. در این مرحله، VG (Volume Group) هنوز خالی است.

▍ مرحله سوم: ایجاد Volume Group (VG)

یک یا چند Physical Volume را با هم ترکیب کرده و یک Volume Group ایجاد می‌کنیم.

┌──(ya3in㉿kali)-[~] └─$ sudo vgcreate myvg /dev/sdb1 /dev/sdb2 Volume group "myvg" successfully created

توضیح: vgcreate myvg /dev/sdb1 /dev/sdb2 یک Volume Group به نام myvg ایجاد می‌کند که شامل دو Physical Volume /dev/sdb1 و /dev/sdb2 است.

• مشاهده Volume Group‌ها

┌──(ya3in㉿kali)-[~] └─$ sudo vgs VG #PV #LV #SN Attr VSize VFree myvg 2 0 0 wz--n- 20.00g 20.00g

توضیح: vgs یا vgdisplay اطلاعات Volume Group‌ها را نشان می‌دهد. VSize نشان‌دهنده حجم کل گروه و VFree فضای آزاد است.

▍ مرحله چهارم: ایجاد Logical Volume (LV)

از فضای Volume Group، یک Logical Volume (مشابه پارتیشن) ایجاد می‌کنیم.

┌──(ya3in㉿kali)-[~] └─$ sudo lvcreate -n mylv -L 10G myvg Logical volume "mylv" created.

توضیح: lvcreate -n mylv -L 10G myvg یک Logical Volume به نام mylv با اندازه ۱۰ گیگابایت از Volume Group myvg ایجاد می‌کند. گزینه‌ها:

• مشاهده Logical Volume‌ها

┌──(ya3in㉿kali)-[~] └─$ sudo lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mylv myvg -wi-a----- 10.00g

توضیح: lvs یا lvdisplay لیست Logical Volume‌ها را نمایش می‌دهد. LSize اندازه هر LV را نشان می‌دهد.

💡 نکته:

Logical Volume در مسیر /dev/mapper/ قرار می‌گیرد. در این مثال، مسیر کامل /dev/mapper/myvg-mylv است.

┌──(ya3in㉿kali)-[~] └─$ ls -l /dev/mapper/myvg-* lrwxrwxrwx 1 root root 7 Aug 16 10:00 /dev/mapper/myvg-mylv -> ../dm-0

▍ مرحله پنجم: فرمت و نصب Logical Volume

مانند یک پارتیشن معمولی، Logical Volume را فرمت کرده و mount می‌کنیم.

┌──(ya3in㉿kali)-[~] └─$ sudo mkfs.ext4 /dev/mapper/myvg-mylv └─$ sudo mkdir /mnt/mylv └─$ sudo mount /dev/mapper/myvg-mylv /mnt/mylv

توضیح: Logical Volume با سیستم فایل ext4 فرمت شده و به دایرکتوری /mnt/mylv mount می‌شود.

▍ حذف (پاک کردن) LVM

اگر بخواهید LVM را حذف کنید، باید مراحل را به ترتیب معکوس انجام دهید: ابتدا Logical Volume، سپس Volume Group و در نهایت Physical Volume.

⚠️ هشدار جدی:

این مراحل همه داده‌های موجود روی LVM را پاک می‌کنند. قبل از شروع، از داده‌های خود پشتیبان بگیرید.

• مرحله ۱: خروج از نصب (Unmount)

┌──(ya3in㉿kali)-[~] └─$ sudo umount /mnt/mylv

• مرحله ۲: حذف Logical Volume

┌──(ya3in㉿kali)-[~] └─$ sudo lvremove /dev/mapper/myvg-mylv Do you really want to remove active logical volume myvg/mylv? [y/n]: y Logical volume "mylv" successfully removed

توضیح: lvremove Logical Volume mylv را حذف می‌کند. سیستم از شما تأیید می‌گیرد.

• مرحله ۳: حذف Volume Group

┌──(ya3in㉿kali)-[~] └─$ sudo vgremove myvg Volume group "myvg" successfully removed

توضیح: vgremove Volume Group myvg را حذف می‌کند. اگر LVهای فعالی داشته باشد، قبل از حذف VG باید آنها را حذف کنید.

• مرحله ۴: حذف Physical Volume

┌──(ya3in㉿kali)-[~] └─$ sudo pvremove /dev/sdb1 /dev/sdb2 Labels on physical volume "/dev/sdb1" successfully wiped. Labels on physical volume "/dev/sdb2" successfully wiped.

توضیح: pvremove برچسب‌های LVM را از Physical Volume‌ها پاک می‌کند و آنها را به حالت پارتیشن عادی بازمی‌گرداند.

💡 نکته:

اگر نمی‌خواهید Physical Volume را به‌طور کامل حذف کنید، می‌توانید فقط آن را از Volume Group خارج کنید:

sudo vgreduce myvg /dev/sdb1

این دستور /dev/sdb1 را از Volume Group myvg خارج می‌کند، اما برچسب LVM روی آن باقی می‌ماند.

▍ جمع‌بندی

مرحله دستور توضیح
نمایش دیسک‌ها lsblk یا sudo fdisk -l شناسایی دیسک‌ها و پارتیشن‌ها
ایجاد PV sudo pvcreate /dev/sdX1 تبدیل پارتیشن به Physical Volume
ایجاد VG sudo vgcreate myvg /dev/sdX1 ترکیب PVها در یک Volume Group
ایجاد LV sudo lvcreate -n mylv -L 10G myvg ایجاد Logical Volume
فرمت و نصب sudo mkfs.ext4 /dev/mapper/myvg-mylv
sudo mount /dev/mapper/myvg-mylv /mnt/mylv
فرمت و نصب Logical Volume
حذف LV sudo lvremove /dev/mapper/myvg-mylv حذف Logical Volume
حذف VG sudo vgremove myvg حذف Volume Group
حذف PV sudo pvremove /dev/sdX1 پاک کردن برچسب LVM از پارتیشن
✅ تمرین پیشنهادی:
  • با lsblk دیسک‌های خود را شناسایی کنید.
  • یک پارتیشن خالی (مثلاً /dev/sdb1) را با pvcreate به LVM اضافه کنید.
  • یک Volume Group به نام testvg ایجاد کنید.
  • یک Logical Volume به نام testlv با اندازه ۲ گیگابایت ایجاد کنید.
  • آن را با ext4 فرمت کرده و به /mnt/testlv mount کنید.
  • پس از تست، مراحل حذف را به ترتیب انجام دهید.